/**
 * @file test.c
 * @author GeShuHan (ufo281@outlook.com)
 * @brief 
 * @version 0.1
 * @date 2024-08-28
 * 
 * @copyright Copyright (c) 2024
 * 
 */
#include <stdio.h>  
#include <stdarg.h>  
  



/**
 * @brief 可变参数的累加函数
 * 
 * @param num 输入参数的数量
 * @param ... 
 * @return int 
 */
int add(int num, ...) 
{  
    va_list valist; // 创建一个va_list类型的变量，用于存储参数列表的信息  
    int sum = 0;  
    int i = 0;
  
    // 初始化valist变量，让它指向函数的第一个可变参数  
    va_start(valist, num);  
  
    // 循环遍历所有的参数  
    for (i = 0; i < num; i++) 
    {  
        // 使用va_arg宏来获取当前参数的值，并将valist指针移动到下一个参数  
        int arg = va_arg(valist, int);  
        sum += arg;  
    }  
  
    // 清理工作，结束可变参数的处理  
    va_end(valist);  
  
    return sum;  
}  

  
int main() 
{  

    int result = 0;
    result = add( 2,5,4);  
    printf("Sum is: %d\n", result);  
  
    return 0;  

}
